home *** CD-ROM | disk | FTP | other *** search
/ The Atari Compendium / The Atari Compendium (Toad Computers) (1994).iso / files / umich / utils / virus / virend31.zoo / virendet.3-1 / wprotect / wprotect.s < prev    next >
Text File  |  1992-02-22  |  26KB  |  818 lines

  1. *******************************************************************************
  2. *
  3. *         >>  WPROTECT.S <<                  V1.01      17.01.1992
  4. *
  5. *         Shareware © by
  6. *         Christoph Conrad
  7. *         Adalbertsteinweg 113
  8. *         5100 Aachen
  9. *
  10. *         E-Mail (lieber die als P*ST) direkt über
  11. *         MAUS: Christoph Conrad @ AC3
  12. *         ...und die Gateways
  13. *         FIDO: Christoph Conrad % Maus AC3 2:242/2.6
  14. *       USEnet: Christoph_Conrad@ac3.maus.de
  15. *     Zerberus: Christoph_Conrad%ac3@zermaus.zer
  16. *          BTX: Seite *35008024#, im Formular ausfüllen
  17. *               Christoph_Conrad@AC3.MAUS.DE.UUCP
  18. *               (kostet 90 Pfennig)
  19. *
  20. * Dieses Programm liegt auch dem VIRENDETEKTOR bei, _DEM_ Virensuchprogramm
  21. * auf dem ATARI ST/TT von Volker Soehnitz @ AC. Keiner bietet mehr!
  22. * Lassen Sie sich registrieren und geniessen Schutz vor allen aktuellen
  23. * Viren durch den Updateservice.
  24. *
  25. * Wenn Sie den Sharewarebeitrag für den VIRENDETEKTOR bezahlt haben,
  26. * müssen Sie KEINEN Sharewarebeitrag für WProtect zahlen! Falls Sie
  27. * keinen Sharewarebeitrag für den VIRENDETEKTOR zahlen wollen/können,
  28. * WProtect aber trotzdem regelmässig nutzen, sind Sie verpflichtet,
  29. * den Sharewarebeitrag in Höhe von 10,- DM zu bezahlen.
  30. * Details siehe WPROTECT.TXT
  31. *
  32. * WProtect kann allerdings auch so weiterkopiert werden, allerdings nur
  33. * _MIT_
  34. * WPROTECT.S
  35. * WPRORSC.S
  36. * WPROTECT.PRG (Unter GEM/Autoordner, durch Umbenennen auch Accessory)
  37. * WPROTECT.RSC
  38. * WPROTECT.RSD (Kuma NRCS)
  39. * WPROTECT.TXT
  40. *
  41. * Liebe Leute, diese Source entstand vor grauer Vorzeit. Also verzeiht mir
  42. * die nicht ganz so übersichtliche Programmierung (in der nächsten Version
  43. * komplett überarbeitet).
  44. *
  45. * Im folgenden bedeute
  46. *
  47. * + Neues Feature
  48. * - Beseitigter Bug / Unschönheit / Inkompatibilität
  49. *
  50. * History:
  51. * 0.97/f: - Sicherungslaufwerk jetzt aus _bootdev ($446)
  52. *         - _drvbits / ProtDrive / ProtDouble wird jetzt als 32 Bit behandelt
  53. *           (Laufwerke A-Z)
  54. *         - Im Accessory werden jetzt bei jeder Aktivierung die aktuellen
  55. *           Schutzwerte aus dem CurrentVec übernommen (sonst würde eine
  56. *           zwischenzeitliche Änderung über einen Programmaufruf ignoriert)
  57. *         + Nachfrage bei Sichern auf X:\AUTO\WPROTECT.PRG (X == Bootlaufwerk),
  58. *           falls Bootlaufwerk als geschützt gilt.
  59. *         + Accessory erkennt nachträglich installierten Schutz.
  60. *         + Unterstützung des VA-Protokolls (VA_START)
  61. *
  62. * Die magische Grenze...
  63. *
  64. * 1.00:   (internal release, not distributed)
  65. *         + GEM-Dialogbox
  66. *           Zum Umwandeln der Resource in Assemblerquellcode verwende
  67. *           ich RSC_TO_S.PRG von
  68. *           »Bernd Eckstein« @ AC (Shareware, 10,- die sich lohnen!)
  69. *           Version >= 1.18!! ( Hallo Bernd =:^} )
  70. *         + Erkennung des residenten Prg über Cookies anstatt XBRA
  71. *           COOKIE-Library von
  72. *           »Arnd Beissner« @ MS (PD, sehr einfach in der Anwendung)
  73. *           Version >= 1.03!!
  74. *           In Version 1.03 sind noch eine Menge bra, die sich in bra.s
  75. *           umwandeln lassen.
  76. *         + Anpassung des Resourcefiles an Letemfly von
  77. *           »Oliver Scheel« @ K (PD, 'man fliegt nicht mehr ohne...')
  78. *           Version >= 1.14!!
  79. *           Die Laufwerksbuttons 'A'-'Z' sind über ALT-A - ALT-Z erreichbar.
  80. *           UNDO entspricht dem Abbruchbutton, HELP dem Sichernbutton.
  81. *           In V1.14 verhält sich die Letemfly-form_alert-Routine bezüglich
  82. *           innerhalb der Box zentrierter Texte anders als die Original-
  83. *           VDI-Routine. Dies ist ein rein kosmetisches Problem.
  84. *
  85. * Alle über MAUS E-Mail addressierbaren Leute können auch über die
  86. * Gateways erreicht werden, indem mein Name und mein Mausknoten (@AC3)
  87. * gegen ihren Namen/MAUS-Knoten ausgetauscht wird, also etwa
  88. *         FIDO: Bernd Eckstein % Maus AC @ 2:242/2.6
  89. *
  90. * 1.01:   + Für das Sichern der Konfiguration wird das Bootlaufwerk
  91. *           DGetDrv (GEMDOS 25) im Autoordner-Programm ermittelt.
  92. *         + Versionsnummer abfragbar (siehe Source Label 'Version')
  93. *         + LinksShift+[Button]Nochmal in der Critical-Error-Handler-Box
  94. *           hebt den Schreibschutz für dieses Laufwerk auf!
  95. *
  96. * Future Releases (*+ bei genügender Zahlungsmoral)
  97. *         + MetaDOS-Laufwerke werden definitiv unterstützt
  98. *        *+ CPX-Modul (wenn es dazu ein vernünftiges Assembler-Toolkit gibt)
  99. *        *+ Kommandozeile a la
  100. *           WPROTECT +ABC-EFG schützt A/B/C, entschützt E/F/G
  101. *           und lässt den Schutzstatus aller anderen Laufwerke unangetastet
  102. *           WPROTECT ++-EF schütze alle ausser E und F
  103. *           WPROTECT --+EF entschütze alle, schütze E und F
  104. *        *+ Buttons [ Schütze alle ] / [ Entschütze alle ]
  105. *        +- WPROTECT.INF-Datei anstatt Speichern der Parameter im
  106. *           Programm selbst.
  107. *         + aufgeräumterer Source
  108. *         + bessere Dokumentation
  109. *
  110. * mfg chris.
  111. *
  112. * Assemblieren mit MadMac V 0.13 (uralt, aber schnell & zuverlässig)
  113. * Kommandozeile: -p wprotect
  114. *
  115. * WPRORSC.S (das umgewandelte Resourcefile) + COOKIE.S
  116. * müssen sich in demselben Verzeichnis wie WPROTECT.S befinden!
  117. *
  118. * Noch einige Bemerkungen zur RESOURCE. Die Objekte müssen mit 'Erst X, dann Y'
  119. * sortiert sein, damit die Laufwerksknöpfe aufsteigende Objektindize haben.
  120. *
  121. * In der umgewandelten Resource bezeichnet
  122. * OBJCs000    Anzahl Objekte in Baum 1
  123. * Objc000000  Label des ersten Objekt in Baum 1
  124. * Falls Ihr Resourcekonverter andere Bezeichnungen wählt, müssen Sie
  125. * diese anpassen.
  126. *
  127. *******************************************************************************
  128.  
  129. WRITE_PROTECT   EQU     -13         ; Bios-Fehlermeldung
  130. _bootdev        EQU     $446
  131. hdv_rw          EQU     $476        ; Harddisk Schreiben-Lesen
  132. _drvbits        EQU     $4C2
  133.  
  134. NrOfDrives      EQU     26
  135.  
  136.             .macro AES  func
  137.             lea         \func(pc),a0
  138.             bsr         CallAES
  139.             .endm
  140.  
  141.             .macro SupExec  func
  142.             lea         \func(pc),a0
  143.             bsr         SupExec
  144.             .endm
  145.  
  146.             .macro ZeigeAlert  func
  147.             move.l  #\func,addrin
  148.             move.w  #1,intin           ; Defaultbutton 1
  149.             AES     FormAlert
  150.             .endm
  151.  
  152.            .macro GEMDOS trpno, clean
  153.            .if \trpno != 0
  154.             move.w  #\trpno,-(sp)
  155.            .else
  156.             clr.w   -(sp)
  157.            .endif
  158.             trap    #1
  159.            .if \# = 2
  160.               .if  \clean <= 6         ; -2 wegen trpno
  161.                addq.w  #2+\clean,sp    ; .w ok, da Extension automatisch!
  162.               .else
  163.                lea     2+\clean(sp),sp
  164.               .endif
  165.            .endif
  166.            .endm
  167.  
  168.            .TEXT
  169. Anfang:     bra     Install
  170.  
  171. *---------------------------
  172. *---------------------------
  173.  
  174. Version:    DC.L    '1.01'      ; Position: -18(NewHdvRW)
  175.  
  176. AutoBootDrv:DC.W    0           ; aktuelles Laufwerk bei Autoordner-Programm
  177. * Bitstring zu schützender Laufwerke Bit 0 == A:, Bit 1 == B: etc.
  178. ProtDrive:  DC.L    0           ; Position: -16(NewHdvRW)
  179.  
  180. *
  181. * XBRA-Struktur
  182. *
  183. XBRA:       DC.B    "XBRA"      ; Position: -12(NewHdvRW)
  184. Ident:      DC.B    "WPRO"      ; Position: -8(NewHdvRW)
  185. ; alter hdv_rw-Vektor
  186. OldHdvRW:   DC.L    0           ; Position: -4(NewHdvRW)
  187.  
  188. * Neuer hdv_rw-Vektor
  189. NewHdvRW:
  190. ProtDriveOffs   EQU   ProtDrive   - *
  191. AutoBootDrvOffs EQU   AutoBootDrv - *
  192.  
  193.             movem.l d1-a6,RegSave
  194.  
  195.             btst.b  #0,5(sp)    ; Read-Write-Flag
  196.             beq.s   gotoOld     ; es wird nur gelesen
  197.  
  198.             move.w  14(sp),d3   ; Laufwerk 0=A:, 1=B: etc.
  199.             move.l  _drvbits.w,d4
  200.             btst.l  d3,d4       ; gibt's das Laufwerk überhaupt ?
  201.             beq.s   gotoOld     ; nein
  202.             move.l  ProtDrive(pc),d4
  203.             btst.l  d3,d4       ; soll Laufwerk geschützt werden ?
  204.             beq.s   gotoOld     ; nein
  205.     .loop:  moveq   #WRITE_PROTECT,d0
  206.           ; D3-D7 / A3-A6 werden vom Critical-Error-Handler gerettet
  207.             bsr.s   CallCritErr ; critical-error-handler aufrufen
  208.